package com.hhxy.session.servlet;

import com.hhxy.session.db.BookDB;
import com.hhxy.session.pojo.Book;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/**
 * @author ghp
 * @date 2022/9/26
 * @Title
 * @description 对点击购买的书籍进行处理（这是一个中间站）
 */
@WebServlet("/purchaseServlet")
public class PurchaseServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1、获得用户购买的商品
        String id = request.getParameter("id");
        //2、判断用户是否选择了要购买的书籍
        if (id == null) {
            // 如果id为null，则重定向到ListBookServlet页面
            String url = "/day04_Fifth/listBookServlet";
            response.sendRedirect(url);
            return;
        }

        //3、用户购买了图书，将所有要购买的图书封装到List集合（cart）中，然后将该集合存储到Session域中
        //如果id有值，就根据id从BookDB中获取书籍的信息
        Book book = BookDB.getBook(id);
        //创建Session对象
        HttpSession session = request.getSession(false);
        //从Session对象中获得用户的购物车
        List<Book> cart = (List) session.getAttribute("cart");
        if (cart == null) {
            //首次购买，为用户创建一个购物车(List集合模拟购物车)
            cart = new ArrayList<Book>();
            //将购物车存入Session对象
            session.setAttribute("cart", cart);
        }
        //将要购买的书放入购物车
        cart.add(book);

        //4、设置Session的ID的在浏览器中的存活时间（Session的id默认存在30分钟），这一步可要可不要
        //将Session的ID存到Cookie中
        Cookie cookie = new Cookie("JSESSIONID", session.getId());
        //设置Cookie的存活时间（3分钟）
        cookie.setMaxAge(60*3);
        //设置Cookie的有效目录路径
        cookie.setPath("/day04_Fifth");
        //发送Cookie
        response.addCookie(cookie);
        // 重定向到购物车页面
        String url = "/day04_Fifth/cartServlet";
        response.sendRedirect(url);
    }
}